/**
 * 自定义工具类
 * @method 检查本地是否有token {@link hasAuthorization}
 * @method 判断返回正确资源api地址 {@link getHttpPath}
 * @method 浮点数转百分数 {@link toPercent}
 * @method 日期格式化 {@link dateFormat}
 * @method 正则表达式核对手机号格式 {@link checkPhone}
 * @method 正则表达式核对验证码格式 {@link checkSmsCode}
 * @method 正则表达式核对密码格式 {@link checkPassword}
 * @method 正则表达式核对昵称格式 {@link checkNickname}
 *
 * @author likunrui2
 *
 */
import {_HOST_} from './my-core'
// 检查本地是否有token
export const hasAuthorization = (obj) => {
  let authorization = obj.$store.state.authorization
  if (authorization === '') {
    authorization = window.localStorage.getItem('authorization')
    obj.$store.commit('setToken', authorization)
  }
  return authorization !== ''
}

// 判断返回正确资源api地址
export const getHttpPath = (val) => {
  const regex = /(http|ftp|https):\/\//
  if (val == null || regex.test(val)) {
    const arr = [
      'http://ask.ivideo.sina.com.cn',
      'http://ckplayer-video-sample.oss-cn-shanghai.aliyuncs.com',
      'https://50069.gzc.svp.tencent-cloud.com',
      'https://sf1-ttcdn-tos.pstatp.com'
    ]
    if (val.includes(arr[0])) {
      return val.replace(arr[0], '/sina')
    } else if (val.includes(arr[1])) {
      return val.replace(arr[1], '/ckplayer')
    } else if (val.includes(arr[2])) {
      return val.replace(arr[2], '/gzcsvp')
    } else if (val.includes(arr[3])) {
      return val.replace(arr[3], '/sf1ttcdn')
    }
    return val
  }
  return _HOST_ + val
}

// 浮点数转百分数
export const toPercent = (point) => {
  let str = Number(point * 100).toFixed(1)
  str += '%'
  return str
}

// 日期格式化
export const dateFormat = (fmt, date) => {
  let ret
  const opt = {
    'y+': date.getFullYear().toString(), // 年
    'm+': (date.getMonth() + 1).toString(), // 月
    'd+': date.getDate().toString(), // 日
    'H+': date.getHours().toString(), // 时
    'M+': date.getMinutes().toString(), // 分
    'S+': date.getSeconds().toString() // 秒
    // 有其他格式化字符需求可以继续添加，必须转化成字符串
  }
  for (let k in opt) {
    ret = new RegExp('(' + k + ')').exec(fmt)
    if (ret) {
      fmt = fmt.replace(ret[1], (ret[1].length === 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, '0')))
    }
  }
  return fmt
}

// 核对手机号格式
export const checkPhone = (phone) => {
  const regex = /^((13[0-9])|(14[579])|(15[^4])|(18[0-9])|(17[0135678]))\d{8}$/
  return regex.test(phone)
}

// 核对验证码格式
export const checkSmsCode = (sms) => {
  const regex = /\d{6}$/
  return regex.test(sms)
}

// 核对密码格式
export const checkPassword = (pwd) => {
  const regex = /^(?=.*[A-Z|a-z])(?=.*\d)[A-Za-z\d]{6,16}$/
  return regex.test(pwd)
}
// 核对昵称格式
export const checkNickname = (nickname) => {
  const regex = /[^\s\\~`!@#$%^&*(){}|/=+?<>'";:]{6,16}/
  return regex.test(nickname)
}

// 获取bilibili弹幕Api
export const getBiliDanmakuApi = (val) => {
  return 'https://dplayer.moerats.com/v3/bilibili?cid=' + val
}
